/******************************************************************************/
//	EventFactory.h	-	Handles creation and deletion of events
/******************************************************************************/

#ifndef _EVENTFACTORY_H_
#define _EVENTFACTORY_H_

#include "Event.h"

#include <vector>
using namespace std;

class EventFactory
{
	private:

		vector <Event*> m_inventory;	// The storage container for in-stock events

	public:

		// contructor
		EventFactory();

		// destructor
		~EventFactory();

		/******************************************************************************/
		//	ReturnEvent	-	Places an event in the factory's inventory
		//
		//	In:		pEvent	-	An event that is ready to be re-used
		/******************************************************************************/
		void ReturnEvent(Event* pEvent);

		/******************************************************************************/
		//	GetEvent	-	Takes an event from factory inventory (or creates new event)
		//
		//	Return:	a ready-to-be-used event
		/******************************************************************************/
		Event* GetEvent();
};

extern EventFactory	eventFactory;	// Our instance of this object

#endif // _EVENTFACTORY_H_
